package k_singleton.a_design_pattern.f_static_innner_class;

/**
 * Created by wug on 2016/7/29 0029.
 * 静态内部类方式
 */
public class Singleton {
    private static class SingletonHolder {
        private static final Singleton INSTANCE = new Singleton();
    }
    private Singleton (){}
    public static final Singleton getInstance() {
        return SingletonHolder.INSTANCE;
    }

    /**
     * 只有显示通过调用getInstance方法时，才会装载SingletonHolder类
     *
     * 好处在于
     * 1. 线程安全问题
     * 2. 懒汉式lazy 延迟加载
     *
     * 使用场景
     * 1 实例化instance很消耗资源
     * 2 不希望在Singleton类加载时就实例化
     * 3 不能确保Singleton类还可能在其他的地方被主动使用从而被加载,此时实例化instance显然是不合适。
     *
     * 为什么我觉得还是会耗资源 静态内部类在加载的时候就不耗资源了吗？求大神解释下
     *
     */
}
